//package com.pro.framework.json.service;
//
//import com.fasterxml.jackson.core.JsonParser;
//import com.fasterxml.jackson.databind.*;
//import com.fasterxml.jackson.databind.deser.BeanDeserializerModifier;
//import com.fasterxml.jackson.databind.module.SimpleModule;
//import com.pro.framework.json.annotation.NoTrim;
//
//import java.io.IOException;
//import java.lang.reflect.Field;
//
///**
// * 全局 String Trim 模块，支持 @NoTrim 跳过
// */
//public class StringTrimModule extends SimpleModule {
//
//    public StringTrimModule() {
//        setDeserializerModifier(new BeanDeserializerModifier() {
//            @Override
//            public JsonDeserializer<?> modifyDeserializer(DeserializationConfig config, BeanDescription beanDesc, JsonDeserializer<?> deserializer) {
//                return new JsonDeserializer<Object>() {
//                    @Override
//                    public Object deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
//                        Object bean = deserializer.deserialize(p, ctxt);
//                        if (bean == null) {
//                            return null;
//                        }
//                        for (Field field : bean.getClass().getDeclaredFields()) {
//                            if (field.getType() == String.class && !field.isAnnotationPresent(NoTrim.class)) {
//                                field.setAccessible(true);
//                                try {
//                                    Object val = field.get(bean);
//                                    if (val instanceof String str) {
//                                        String trimmed = str.trim();
//                                        if (!trimmed.equals(str)) {
//                                            field.set(bean, trimmed);
//                                        }
//                                    }
//                                } catch (IllegalAccessException ignored) {}
//                            }
//                        }
//                        return bean;
//                    }
//                };
//            }
//        });
//    }
//}
